package cn.zjgsu.exception;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;
/**
 * 
 * @author yan
 * @version 创建时间：2016年4月2日 下午5:29:48 
 * 类说明 ：全局异常处理器;dao抛给service、service给controller、controller抛给前端控制器
 * 如果与业务功能相关的异常，建议在service中抛出异常。
     与业务功能没有关系的异常，建议在controller中抛出。
 */
public class MyExceptionResolver implements HandlerExceptionResolver {

	/**
	 * （非 Javadoc）
	 * <p>Title: resolveException</p>
	 * <p>Description: </p>
	 * @param request
	 * @param response
	 * @param handler
	 * @param ex 系统 抛出的异常
	 * @return
	 * @see org.springframework.web.servlet.HandlerExceptionResolver#resolveException(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.Object, java.lang.Exception)
	 */
	public ModelAndView resolveException(HttpServletRequest request,
			HttpServletResponse response, Object handler, Exception ex) {
		//上边代码变为
		MyException customException = null;
		if(ex instanceof MyException){
			customException = (MyException)ex;
		}else{
			customException = new MyException("未知错误");
		}
		
		//错误信息
		String message = customException.getMessage();
		
		
		ModelAndView modelAndView = new ModelAndView();
		
		//将错误信息传到页面
		modelAndView.addObject("message", message);
		
		//指向错误页面
		modelAndView.setViewName("error");

		
		return modelAndView;
	}

}
